/***************************************
 * 说明：本文件主要实现第五章课后习题部分
 * *************************************/
#include "test.h"
/*******************************************
 * 习题5.1：将5.1的程序片段组合成一个完整的程序
 * *****************************************/
void exercise1()
{
    Student1 stu;
    stu.input();
    stu.show();
}
/*******************************************
 * 习题5.2：使用私有继承将5.2的程序片段
 * 组合成一个完整的程序
 * *****************************************/
void exercise2()
{
    Student2 stu;
    stu.input();
    stu.show();
}
/*******************************************
 * 习题5.3：使用保护继承的方式输出程序的数据
 * *****************************************/
void exercise3()
{
    Student3 stu(90, "wang", 'm', 30, "chengdu");
    stu.show();
}
/*******************************************
 * 习题5.4：使用公有继承的方式输出程序的数据
 * *****************************************/
void exercise4()
{
    Student4 stu(90, "wang", 'm', 30, "chengdu");
    stu.show();
}
/*****************************
 * 习题5.7：分析程序的运行结果
 * ***************************/
void exercise7()
{
    Child ch1;
    Child ch2(1);
    Child ch3(1, 2);
    Child ch4(1, 2, 3);
    ch1.show1();  // 0 0 0
    ch2.show1();  // 1 0 0
    ch3.show1();  // 1 2 0
    ch4.show1();  // 1 2 3
}
/*****************************
 * 习题5.8：分析程序的运行结果
 * ***************************/
void exercise8()
{
    Child3 ch3;
}
/*****************************************
 * 习题5.9：分别定义教师类与干部类，采用多重继
 * 承的方式由这两个类 * 派生类教师兼干部类
 * **************************************/
void Teacher_Cadre::input()
{
    cin >> name >> age >> sex >> addr >> num >> wage >> title >> post;
}
void Teacher_Cadre::show()
{
    Teacher::display();
    cout << "post = " << post << " wage = " << wage << endl;
}
void exercise9()
{
    Teacher_Cadre test;
    test.input();
    test.show();
}
/*****************************************
 * 习题5.10：对5.8节中的程序加以实现
 * **************************************/
void exercise10()
{
    Birthday day(2020, 8, 23);
    Profess pro(day, 8967, "wang", 'm');
    pro.show();
}
int main()
{
    exercise10();
    return 0;
}
